package org.gwc.register;

import org.gwc.pojo.Person;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 接受用户数据，用户校验注解
 * 步骤1：实体类属性添加校验注解
 * 步骤2：handler（@validated实体类 对象）
 * 步骤3：param | json 校验注解都有效果
 *       json参数 - @RequestBody
 *
 * 如果，不符合校验规则，直接向前端抛出异常
 * 接收错误绑定信息，自定义返回结果，约定：参数错误-》{code:400}->前端
 * 捕捉错误绑定错误信息：
 *  1、handler(校验对象，BindingResult result) 要求：bindingResult 必须紧挨着 校验对象
 *  2、bindingresult 获取绑定错误
 */

@RestController
@RequestMapping(value = "person")
public class PersonController {

    @PostMapping(value = "register")
    public Object register(@Validated @RequestBody Person person, BindingResult result){
        if(result.hasErrors()){
            // 有绑定错误，就不直接返回了，有我们自定义
            Map data = new HashMap();
            data.put("code",400);
            data.put("msg","参数校验异常");
            return data;
        }

        System.out.println("person = " + person);
        return person;
    }
}
